define(function (require, exports, module) {
    var $ = require("zepto");
    module.exports = $;
    (function ($, e) {
        function n(t) {
            return t.replace(/([a-z])([A-Z])/, "$1-$2").toLowerCase()
        }
        function i(t) {
            return a ? a + t : t.toLowerCase()
        }
        var a, o, r, s, l, c, u, d, h, f, p = "", g = {Webkit: "webkit", Moz: "", O: "o"}, m = window.document, v = m.createElement("div"), x = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i, b = {};
        $.each(g, function (t, n) {
            return v.style[t + "TransitionProperty"] !== e ? (p = "-" + t.toLowerCase() + "-", a = n, !1) : e
        }), o = p + "transform", b[r = p + "transition-property"] = b[s = p + "transition-duration"] = b[c = p + "transition-delay"] = b[l = p + "transition-timing-function"] = b[u = p + "animation-name"] = b[d = p + "animation-duration"] = b[f = p + "animation-delay"] = b[h = p + "animation-timing-function"] = "", $.fx = {off: a === e && v.style.transitionProperty === e, speeds: {_default: 400, fast: 200, slow: 600}, cssPrefix: p, transitionEnd: i("TransitionEnd"), animationEnd: i("AnimationEnd")}, $.fn.animate = function (n, i, a, o, r) {
            return $.isFunction(i) && (o = i, a = e, i = e), $.isFunction(a) && (o = a, a = e), $.isPlainObject(i) && (a = i.easing, o = i.complete, r = i.delay, i = i.duration), i && (i = ("number" == typeof i ? i : $.fx.speeds[i] || $.fx.speeds._default) / 1e3), r && (r = parseFloat(r) / 1e3), this.anim(n, i, a, o, r)
        }, $.fn.anim = function (i, a, p, g, m) {
            var v, y, w, _ = {}, C = "", k = this, j = $.fx.transitionEnd, T = !1;
            if (a === e && (a = $.fx.speeds._default / 1e3), m === e && (m = 0), $.fx.off && (a = 0), "string" == typeof i)
                _[u] = i, _[d] = a + "s", _[f] = m + "s", _[h] = p || "linear", j = $.fx.animationEnd;
            else {
                y = [];
                for (v in i)
                    x.test(v) ? C += v + "(" + i[v] + ") " : (_[v] = i[v], y.push(n(v)));
                C && (_[o] = C, y.push(o)), a > 0 && "object" == typeof i && (_[r] = y.join(", "), _[s] = a + "s", _[c] = m + "s", _[l] = p || "linear")
            }
            return w = function (n) {
                if (n !== e) {
                    if (n.target !== n.currentTarget)
                        return;
                    $(n.target).unbind(j, w)
                } else
                    $(this).unbind(j, w);
                T = !0, $(this).css(b), g && g.call(this)
            }, a > 0 && (this.bind(j, w), setTimeout(function () {
                T || w.call(k)
            }, 1e3 * a + 25)), this.size() && this.get(0).clientLeft, this.css(_), 0 >= a && setTimeout(function () {
                k.each(function () {
                    w.call(this)
                })
            }, 0), this
        }, v = null
    })($);
});